/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estsapp.expertos;

import estsapp.entidades.Demanda;
import estsapp.entidades.DetalleProducto;
import estsapp.entidades.ParametrosGenerales;
import estsapp.entidades.ProductoTerminado;
import java.util.List;
import persistencia.Conexion;
import persistencia.Fachada;
import persistencia.exceptions.ExcepcionFachada;

/**
 *
 * @author Juan
 */
public class ExpertoDemanda implements Experto {

    public void guardar(ProductoTerminado productoTerminado) throws ExcepcionFachada {
        Conexion.getInstancia().iniciarTX();
        Fachada.getInstancia().guardar(productoTerminado);
        Conexion.getInstancia().confirmarTx();
    }
    public void guardarDemandaMateriales(ProductoTerminado productoTerminado, Demanda demanda) throws ExcepcionFachada {
        List<DetalleProducto> listaDetProd = productoTerminado.getDetalles();
        
        for (DetalleProducto detalleProducto : listaDetProd) {
            Float can = demanda.getCantidad() * detalleProducto.getCantidad();
            Demanda demandaDetalle = new Demanda();
            demandaDetalle.setAnio(demanda.getAnio());
            demandaDetalle.setCantidad(can);
            demandaDetalle.setMes(demanda.getMes());
            detalleProducto.getPieza().getHistoricoDemanda().add(demandaDetalle);
            
        }
        
        
        
        
        
        
        Conexion.getInstancia().iniciarTX();
        Fachada.getInstancia().guardar(productoTerminado);
        Conexion.getInstancia().confirmarTx();
    }

    public ParametrosGenerales obtenerParametrosGenerales() {
        ParametrosGenerales parametro;
        List parametros = Fachada.getInstancia().buscar(ParametrosGenerales.class, null);
        if (parametros.isEmpty()) {
            parametro = null;
        } else {
            parametro = (ParametrosGenerales) parametros.get(0);
        }


        return parametro;
    }

    public void guardarParametros(ParametrosGenerales parametro) throws ExcepcionFachada {

        Fachada.getInstancia().guardar(parametro);
    }
    
    public void calcularPromedioMovilPonderado(Integer cantidadDePeriodosAnteriores, Float factorDePonderacion){
        
        
    }
    
    public Float calcularDemandaModeloPromedioMovilPonderado(){
        return null;
    }
    
}
